﻿/*
	AUTHOR	:	LE DANG SON
	DATE	:	15/4/2011
	PURPOSE	:	

			3/ Phân công nhân viên theo đề án:
				•	Input : MaDA,TenDA, DDiem_DA,MaPhg
				•	Output:  
				•	Process: 
					o	Kiểm tra xem đề án này có tồn tại chưa, nếu chưa có thì sẽ insert dữ liệu vào trong table đề án, 
						sau đó kiếm 3 nhân viên có số lượng phân công đề án ít nhất và tiến hành phân công cho đề án này. 
						Sau đó thong báo ra kết quả như sau:
							Đã phân công Đề án X cho nhân viên A thành công
							Đã phân công Đề án X cho nhân viên B thành công
							Đã phân công Đề án X cho nhân viên C thành công

					o	Kiểm tra xem đề án này có tồn tại chưa, nếu có rồi thì đếm xem có bao 
						nhiêu nhân viên đã tham gia đề án này rồi, nếu số lượng tham gia nhỏ hơn 5 thì sẽ phân công 
						đề án này cho nhân viên có số đề án tham gia it nhất (nếu có từ 2 nhân viên trùng số đề án 
						tham gia thì chọn nhân viên có tên theo thứ tự A-B), thong báo kết quả như sau:
						Đã phân công Đề án X cho nhân viên Y thành công

*/

IF EXISTS (SELECT * FROM DBO.SYSOBJECTS WHERE NAME='SP_PHANCONG_CHO_NHANVIEN')
BEGIN
	DROP PROC SP_PHANCONG_CHO_NHANVIEN
END
GO
CREATE PROC SP_PHANCONG_CHO_NHANVIEN
	@MADA		INT,
	@TENDA		NVARCHAR(30),
	@DDIEM_DA	NVARCHAR(30),
	@MAPHG		INT
AS
BEGIN
	IF NOT EXISTS (SELECT * FROM DEAN WHERE MADA=@MADA)  /*Neu chua ton tai de an thi*/
	BEGIN
		/*Insert du lieu cua de an nay vao bang de an*/
		INSERT INTO DEAN VALUES(@TENDA,@MADA,@DDIEM_DA,@MAPHG)
		/*Tim kiem 3 nhan vien co so luong phan cong de an it nhat va tien hanh phan cong*/
		--Dung cursor de duyet tung phan tu MANV khi select ra duoc
			--Phan khai bao bien cursor
		DECLARE @MANVIEN VARCHAR(10)
		DECLARE @TEN_NVIEN VARCHAR(30)
		DECLARE @CURSOR_SEARCH_MANV CURSOR
		SET @CURSOR_SEARCH_MANV=CURSOR FOR
			SELECT TOP 3 N.MANV,N.TENNV
			FROM NHANVIEN N
			LEFT JOIN PHANCONG P ON P.MA_NVIEN=N.MANV
			GROUP BY N.MANV,N.TENNV
			ORDER BY COUNT(P.MA_NVIEN)
			--Su dung cursor
		OPEN @CURSOR_SEARCH_MANV	--Mo cursor
		FETCH NEXT FROM @CURSOR_SEARCH_MANV INTO @MANVIEN,@TEN_NVIEN
		WHILE @@FETCH_STATUS=0
		BEGIN
			INSERT INTO PHANCONG(MA_NVIEN,SODA) VALUES(@MANVIEN,@MADA)--Tien hanh phan cong cho nhan vien
			--Thong bao ra ket qua
				--In ra thong bao
			PRINT 'DA PHAN CONG DE AN '+@TENDA+' CHO NHAN VIEN '+@TEN_NVIEN+' THANH CONG'

			FETCH NEXT FROM @CURSOR_SEARCH_MANV INTO @MANVIEN,@TEN_NVIEN
		END
		--Dong cursor
		CLOSE @CURSOR_SEARCH_MANV;
		DEALLOCATE @CURSOR_SEARCH_MANV;
	END		--#END Neu chua ton tai de an
	ELSE	--Neu da ton tai de an
	BEGIN	--Tao mot bien cursor de tim so luong nhan vien cua mot de an
		DECLARE @SL_NV_CUA_1_DEAN INT
			SELECT @SL_NV_CUA_1_DEAN = COUNT(MA_NVIEN)
			FROM PHANCONG
			WHERE SODA=@MADA
			IF(@SL_NV_CUA_1_DEAN < 5)	--Neu so luong nhan vien cua de an dua vao nho hon 5
			BEGIN	--thi tien hanh phan cong cho nhan vien co so luong tham gia de an it nhat
				--Tim nhan vien co so luong than gia do an it nhat
				DECLARE @MA_NHAN_VIEN VARCHAR(10)
				DECLARE @TEN_NHAN_VIEN VARCHAR(30)
					SELECT TOP 1 @MA_NHAN_VIEN=N.MANV,@TEN_NHAN_VIEN=N.TENNV
					FROM NHANVIEN N
					LEFT JOIN PHANCONG P ON P.MA_NVIEN=N.MANV
					GROUP BY N.MANV,N.TENNV
					ORDER BY COUNT(P.MA_NVIEN),N.TENNV
				--Tien hanh phan cong cho nhan vien
				INSERT INTO PHANCONG VALUES(@MA_NHAN_VIEN,@MADA,NULL)
				PRINT 'DA PHAN CONG DE AN '+@TENDA+' CHO NHAN VIEN '+@TEN_NHAN_VIEN+' THANH CONG'
			END

			ELSE
			BEGIN
				PRINT 'DE AN NAY DA CO DU SO NHAN VIEN THAM GIA'
			END
			
	END	
END
		


